#ifndef MSB2023_OSCILLOSCOPE_KEY_H
#define MSB2023_OSCILLOSCOPE_KEY_H

#include "stdint.h"

#define KEY_DOUBLE_CLICKED_THRESHOLD_MS 500
#define KEY_LONG_PRESS_THRESHOLD_MS 500

/**
 * @brief 按键状态类型
 */
typedef enum {
    KEY_CLEAR = 0,
    KEY_SINGLE_CLICKED,
    KEY_DOUBLE_CLICKED,
    KEY_LONG_PRESSED
} KeyState;

/**
 * @brief 按键名称类型
 */
typedef enum {
    KEY_NO_NAME = 0,
    KEY_ENCODER,
    KEY_LEFT,
    KEY_MIDDLE,
    KEY_RIGHT
} KeyName;

/**
 * @brief 按键信息类型
 */
typedef struct {
    KeyState state;
    KeyName name;
} KeyInfo;

KeyInfo key_scan();
void key_clear_flags();

#endif //MSB2023_OSCILLOSCOPE_KEY_H
